package com.linkvin.ec.hcs.service.sysadmin.impl;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.linkvin.ec.hcs.dao.model.sysadmin.SysLog;
import com.linkvin.ec.hcs.dao.mapper.sysadmin.SysLogMapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.linkvin.ec.hcs.service.bo.SysLogBo;
import com.linkvin.ec.hcs.service.sysadmin.SysLogService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.text.SimpleDateFormat;
import java.util.List;

/**
 * <p>
 * 操作日志 服务实现类
 * </p>
 *
 * @author qichao
 * @since 2018-01-04
 */
@Service
public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog> implements SysLogService {

    @Autowired
    private SysLogMapper sysLogMapper;

    @Override
    public Page<SysLog> queryLogPage(Page<SysLogBo> page) throws Exception {
        SimpleDateFormat format =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        EntityWrapper<SysLog> ew = new EntityWrapper<>();
        // 操作用户
        if (!StringUtils.isEmpty(page.getCondition().get("username"))) {
            ew.like("username", page.getCondition().get("username").toString());
        }
        // ip
        if (!StringUtils.isEmpty(page.getCondition().get("ip"))) {
            ew.like("ip", page.getCondition().get("ip").toString());
        }
        // url
        if (!StringUtils.isEmpty(page.getCondition().get("url"))) {
            ew.like("url", page.getCondition().get("url").toString());
        }
        // 操作起始时间
        if (!StringUtils.isEmpty(page.getCondition().get("startTime"))) {
            ew.ge("start_time", format.parse(page.getCondition().get("startTime").toString()).getTime());
        }
        // 操作截止时间
        if (!StringUtils.isEmpty(page.getCondition().get("endTime"))) {
            ew.lt("start_time", format.parse(page.getCondition().get("endTime").toString()).getTime());
        }
        ew.orderBy("startTime", false);
        List<SysLog> logList = sysLogMapper.selectPage(page,ew);

        Page<SysLog> returnPage = new Page<>();
        BeanUtils.copyProperties(page, returnPage);
        returnPage.setRecords(logList);
        return returnPage;
    }

    @Override
    public Integer deleteLog(List ids) throws Exception {
        return sysLogMapper.deleteBatchIds(ids);
    }
}
